Представьте необработанные данные как поток без меток — дикое пространство памяти. В языке Rust мы начинаем обрабатывать данные как последовательные блоки (срезы и массивы). Этот переход от необработанных данных к определённым схемам означает смену анонимной памяти на целенаправленные структуры.
1. Уровень «Необработанных» данных
Срезы и массивы представляют данные в самой простой форме. Безопасность обеспечивается за счёт проверок владения во время компиляции а не издержек во время выполнения. Использование заема (&) позволяет создавать «просмотры» данных, не перемещая значения.
2. Семантические ограничения
Хотя функции, такие как first_word гибки (принимают String, &str, или литералы), они достигают семантического предела. Компилятор знает, что память безопасна, но он не знает, что представляет собой данные представляет (например, имя пользователя или показания датчика), пока мы не сопоставим его со структурой Struct.